package com.koron.operation.dispatch.bean.dto;

import com.koron.bean.base.BaseBean;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

@Data
public class EquipmentSynDto extends BaseBean {

    /**
     * 设备系统编码
     */
    @ApiModelProperty(value = "设备系统编码")
    private String code;

    /**
     * 设备名称
     */
    @ApiModelProperty(value = "设备名称")
    private String name;

    /**
     * 父级编码
     */
    @ApiModelProperty(value = "父级设备id")
    private String parentId;

    /**
     * 父级名称
     */
    @ApiModelProperty(value = "父级设备名称")
    private String parentName;

    /**
     * 层级
     */
    @ApiModelProperty(value = "层级")
    private Integer level;

    /**
     * 层级编码
     */
    @ApiModelProperty(value = "层级编码")
    private Integer levelCode;

    /**
     * 层级路径
     */
    @ApiModelProperty(value = "层级路径")
    private String levelPath;

    /**
     * kks编码
     */
    @ApiModelProperty(value = "kks编码")
    private String encode;

    @ApiModelProperty(value = "组织id")
    private String deptId;

    /**
     * 设备分类编码
     */
    @ApiModelProperty(value = "设备分类编码")
    private String typeId;

    /**
     * 设备分类名称
     */
    @ApiModelProperty(value = "设备分类名称")
    private String typeName;

    /**
     * 业务层级
     */
    @ApiModelProperty(value = "业务层级，水司、部门、......")
    private String floor;

    /**
     * 是否虚拟节点
     */
    @ApiModelProperty(value = "是否虚拟节点（1：是，0：否）")
    private String isVirtual;

    @ApiModelProperty("专业")
    private String major;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态（1：启用，0：停用）")
    private String status;

    /**
     * 排序字段
     */
    @ApiModelProperty(value = "排序字段")
    private Integer sort;

    @ApiModelProperty(value = "基础参数")
    private List<EquipmentParamsSynDto> basicParams;

    @ApiModelProperty(value = "技术参数")
    private List<EquipmentParamsSynDto> techParams;

    @ApiModelProperty("技术参数和基础参数集合")
    private List<EquipmentParamsSynDto> params;

    @ApiModelProperty(value = "子节点")
    private List<EquipmentSynDto> children;

    @ApiModelProperty(value = "全路径id")
    private String fullPathCode;

    @ApiModelProperty(value = "全路径")
    private String fullPathName;

    @ApiModelProperty(value = "是否有子集")
    private boolean hasChildren;

    @ApiModelProperty(value = "组织名称")
    private String deptName;

    public EquipmentSynDto() {}

    public List<EquipmentParamsSynDto> getParams() {
        if(CollectionUtils.isNotEmpty(params)) {
            return this.params;
        }
        if(Objects.isNull(basicParams)) {
            basicParams = new ArrayList<>();
        }
        if(Objects.isNull(techParams)) {
            techParams = new ArrayList<>();
        }
        return ListUtils.union(basicParams, techParams);
    }

//    private String id;
//
//    /**
//     * 设备系统编码
//     */
//    @ApiModelProperty(value = "设备系统编码")
//    private String code;
//
//    /**
//     * 设备名称
//     */
//    @ApiModelProperty(value = "设备名称")
//    private String name;
//
//    /**
//     * 父级编码
//     */
//    @ApiModelProperty(value = "父级设备id")
//    private String parentId;
//
//    /**
//     * 父级名称
//     */
//    @ApiModelProperty(value = "父级设备名称")
//    private String parentName;
//
//    /**
//     * 层级
//     */
//    @ApiModelProperty(value = "层级")
//    private Integer level;
//
//    /**
//     * 层级编码
//     */
//    @ApiModelProperty(value = "层级编码")
//    private Integer levelCode;
//
//    /**
//     * 层级路径
//     */
//    @ApiModelProperty(value = "层级路径")
//    private String levelPath;
//
//    /**
//     * kks编码
//     */
//    @ApiModelProperty(value = "kks编码")
//    private String encode;
//
//    @ApiModelProperty(value = "组织id")
//    private String deptId;
//
//    /**
//     * 设备分类编码
//     */
//    @ApiModelProperty(value = "设备分类编码")
//    private String typeId;
//
//    /**
//     * 设备分类名称
//     */
//    @ApiModelProperty(value = "设备分类名称")
//    private String typeName;
//
//    /**
//     * 业务层级
//     */
//    @ApiModelProperty(value = "业务层级，水司、部门、......")
//    private String floor;
//
//    /**
//     * 是否虚拟节点
//     */
//    @ApiModelProperty(value = "是否虚拟节点（1：是，0：否）")
//    private String isVirtual;
//
//    /**
//     * 状态
//     */
//    @ApiModelProperty(value = "状态（1：启用，0：停用）")
//    private String status;
//
//    /**
//     * 排序字段
//     */
//    @ApiModelProperty(value = "排序字段")
//    private Integer sort;
//
//    @ApiModelProperty(value = "参数list")
//    private List<EquipmentParamsSynDto> paramsList;
//
//    @ApiModelProperty(value = "子节点")
//    private List<String> children;
//
//    @ApiModelProperty(value = "全路径")
//    private String fullPathName;
//
//    @ApiModelProperty(value = "是否有子集")
//    private boolean hasChildren;
//
//    @ApiModelProperty(value = "组织名称")
//    private String deptName;


}
